#!/bin/bash ############################################################################################################### # It is recommended to test this data collection script on a few machines to ensure it meets your requirements. # ManageEngine is not be responsible for any damage/loss to the data/setup based on the behavior of the script. ############################################################################################################### exec 2>/dev/null OracleJavaRemoved=false is_paid_oracle_java() { version="$1" if [[ "$version" == 1.7* ]]; then [[ "$version" =~ _([0-9]+) ]] && (( ${BASH_REMATCH[1]} >= 85 )) && return 0 return 1 fi if [[ "$version" == 1.8* ]]; then [[ "$version" =~ _([0-9]+) ]] && (( ${BASH_REMATCH[1]} >= 211 )) && return 0 return 1 fi if [[ "$version" =~ ^(9|10)(\.|$) ]]; then return 1; fi if [[ "$version" =~ ^(11|12|13|14|15|16)(\.|$) ]]; then return 0; fi if [[ "$version" =~ ^(17|18|19|20|21)(\.|$) ]]; then return 1; fi return 1 } get_vendor() { release_file="$1/release" [[ ! -f "$release_file" ]] && return grep -E '^ *IMPLEMENTOR *= *"' "$release_file" | head -n1 | cut -d'"' -f2 } process_java_home() { java_home="$1" [[ ! -d "$java_home" ]] && return release_file="$java_home/release" [[ ! -f "$release_file" ]] && return version=$(grep '^JAVA_VERSION=' "$release_file" | cut -d'"' -f2) vendor=$(get_vendor "$java_home") [[ "$vendor" != *Oracle* ]] && return if is_paid_oracle_java "$version"; then jdk_root=$(dirname "$(dirname "$java_home")") if [[ -d "$jdk_root" ]]; then rm -rf "$jdk_root" OracleJavaRemoved=true fi fi } if [[ -x "/usr/libexec/java_home" ]]; then while IFS= read -r line; do java_home="${line##* }" process_java_home "$java_home" done < <(/usr/libexec/java_home -V 2>&1) fi for dir in /Library/Java/JavaVirtualMachines/*; do process_java_home "$dir/Contents/Home" done for dir in "$HOME/Library/Java/JavaVirtualMachines/"*; do process_java_home "$dir/Contents/Home" done echo "OracleJavaRemoved:${OracleJavaRemoved}"